package com.lzy.utils;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;

import java.util.Collections;

/**
 * description: CreateCodee ()<br>
 * date: 2022-4-29 14:37 <br>
 * author: lcc <br>
 * version: 1.0 <br>
 */
public class CreateCodee {
    public static void createCode() {
        FastAutoGenerator.create("jdbc:mysql://127.0.0.1:3306/dev_platform?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&useSSL=false&allowPublicKeyRetrieval=true", "dev_platform", "dev_platform")
                .globalConfig(builder -> {
                    builder.author("lcc") // 设置作者
                            .enableSwagger() // 开启 swagger 模式
                            .fileOverride() // 覆盖已生成文件
                            .outputDir("/data/home/lcc/temp"); // 指定输出目录
                })
                .packageConfig(builder -> {
                    builder.parent("com.lzy.system") // 设置父包名
                            .moduleName("dictManage") // 设置父包模块名
                            .pathInfo(Collections.singletonMap(OutputFile.xml, "/data/home/lcc/temp/mapper")); // 设置mapperXml生成路径
                })
                .strategyConfig(builder -> {
                    builder
                            .addInclude("sys_dic_value")
                            .entityBuilder()
                            .enableChainModel() //开启链式模型
                            .enableTableFieldAnnotation()       // 开启生成实体时生成字段注解
                            .enableLombok() //开启 Lombok
                            .naming(NamingStrategy.underline_to_camel)  //数据库表映射到实体的命名策略：默认是下划线转驼峰命。这里可以不设置
                            .columnNaming(NamingStrategy.no_change)    //数据库表字段映射到实体的命名策略：下划线转驼峰命。(默认是和naming一致，所以也可以不设置)
                            .idType(IdType.ASSIGN_UUID)
                            .addIgnoreColumns("create_time", "update_time","version","del_flag")
                            .superClass("com.lzy.common.CommonEntity")
                            .controllerBuilder()
                            .enableHyphenStyle()    //开启驼峰连转字符
                            .enableRestStyle()  //开启生成 @RestController 控制器
                    ;
                })
                .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板，默认的是Velocity引擎模板
                .execute();

    }
}
